﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace FlowBasis.Data
{

    // TODO: Figure out best way to provide mappings for this.
    public class EntityTypeInfo
    {
        public string EntityName { get; set; }
        public Type MappedType { get; set; }

        public IList<EntityPropertyInfo> Properties { get; set; }
        public IList<EntityNavigatorInfo> Navigators { get; set; }
    }

    public class EntityPropertyInfo
    {
        public string PropertyName { get; set; }
        public PropertyInfo MappedProperty { get; set; }
    }

    public class EntityNavigatorInfo
    {
        public string NavigatorName { get; set; }
        public PropertyInfo MappedNavigatorProperty { get; set; }

        public IList<EntityNavigatorJoinProperty> JoinedOn { get; set; }
    }

    public class EntityNavigatorJoinProperty
    {
        public string SourcePropertyName { get; set; }
        public PropertyInfo SourceProperty { get; set; }

        public string TargetPropertyName { get; set; }
        public PropertyInfo TargetProperty { get; set; }
    }
}
